package com.itany.corejava.code08_常用类.object;




/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月08日 16:08
 */
public class Test {
    public static void main(String[] args) {
        Person person=new Person();
        //所有的类都直接或者间接继承了Object类
        // 因此都能调用Object类提供的方法
        // getClass()用于返回运行时的类型
        // 返回的格式:class 包名.类名
        // 此时返回的是Person类
        System.out.println(person.getClass());

        // 多态，父类的引用指向了子类
        // 此时编译时的类型是Person
        // 此时运行时的类型是Man
        // Person person2=new Man();
        Person person2=new Man();
        System.out.println(person2.getClass());

        if(person2 instanceof Man){
            Man man=(Man)person2;
            man.work();
        }


        // 每一个类都有class属性，其属性值即为当前的class类型
        // 语法:类名.class
        System.out.println(Person.class);
        System.out.println(Man.class);

        // 当某个实例的运行时类型与某个类的class类型一致时，说明是同一个类型
        if(person.getClass()==Person.class){
            System.out.println("是相等的");
        }

        // 当某个实例的运行时类型与某个类的class类型一致时，说明是同一个类型
        // 此时可以强制类型转换
        if(person2.getClass()==Man.class){
            Man man=(Man)person2;
            man.work();
        }


    }
}
